import java.util.*;
public class Main{

    public static void main(String[]args){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            int n=scan.nextInt();
            int m=scan.nextInt();
            int[][]map=new int[n+1][m+1];
            int k=scan.nextInt();
            while(k!=0){
                int x=scan.nextInt();
                int y=scan.nextInt();
                map[x][y]=1;
                k--;
            }
            System.out.printf("%.2f\n",sover(map,n,m));
        }
    }
    public static double sover(int[][]map,int n,int m){
        double[][]dp=new double[n+1][m+1];
        dp[1][1]=1.0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(!(i==1&&j==1)){
                    dp[i][j]=dp[i-1][j]*(j==m?1.0:0.5)+dp[i][j-1]*(i==n?1.0:0.5);
                }
                if(map[i][j]==1){
                    dp[i][j]=0.0;
                }
            }
        }
        return dp[n][m];
    }
}
